
#include "TiposBonus.h"

TipoArmadura* GestionTiposBonus::tipoArmadura;
TipoVidaExtra* GestionTiposBonus::tipoVidaExtra;
TipoEstrellaInvencibilidad* GestionTiposBonus::tipoEstrellaInvencibilidad;
TipoVolador* GestionTiposBonus::tipoVolador;

int GestionTiposBonus::idPrincipalArmadura;
int GestionTiposBonus::idPrincipalVidaExtra;
int GestionTiposBonus::idPrincipalEstrellaInvencibilidad;
int GestionTiposBonus::idPrincipalVolador;

void GestionTiposBonus::Inicializar(vector <TipoBonus_y> tiposBonus) {
	
	for (unsigned int i=0; i<tiposBonus.size(); i++) {
		
		if (tiposBonus[i].tipo == "Armadura") 
			tipoArmadura = new TipoArmadura(tiposBonus[i]);
		else if (tiposBonus[i].tipo == "VidaExtra")
			tipoVidaExtra = new TipoVidaExtra(tiposBonus[i]);
		else if (tiposBonus[i].tipo == "EstrellaInvencibilidad")
			tipoEstrellaInvencibilidad = new TipoEstrellaInvencibilidad(tiposBonus[i]);
		else if (tiposBonus[i].tipo == "Volador")
			tipoVolador = new TipoVolador(tiposBonus[i]);
	}
}

void GestionTiposBonus::AsignarTipoBonus(Armadura* armadura) {
			
	tipoArmadura->AsignarABonus(armadura);

}

void GestionTiposBonus::AsignarTipoBonus(VidaExtra* vidaExtra) {
			
	tipoVidaExtra->AsignarABonus(vidaExtra);

}

void GestionTiposBonus::AsignarTipoBonus(EstrellaInvencibilidad* estrellaInvencibilidad) {
			
	tipoEstrellaInvencibilidad->AsignarABonus(estrellaInvencibilidad);

}

void GestionTiposBonus::AsignarTipoBonus(Volador* volador) {
			
	tipoVolador->AsignarABonus(volador);

}

TipoArmadura::TipoArmadura(TipoBonus_y tipoBonus) {
	
	Inicializar(tipoBonus.ancho, tipoBonus.alto, tipoBonus.animaciones, EstadoArmadura::descripcionAcciones, tipoBonus.velocidad, tipoBonus.salto);
	GestionTiposBonus::idPrincipalArmadura = acciones.at(0).idImagen;
}

void TipoArmadura::AsignarABonus(Armadura* armadura) {

	AsignarAObjeto(armadura);
}

TipoVidaExtra::TipoVidaExtra(TipoBonus_y tipoBonus) {
	
	Inicializar(tipoBonus.ancho, tipoBonus.alto, tipoBonus.animaciones, EstadoVidaExtra::descripcionAcciones, tipoBonus.velocidad, tipoBonus.salto);
	GestionTiposBonus::idPrincipalVidaExtra = acciones.at(0).idImagen;
}

void TipoVidaExtra::AsignarABonus(VidaExtra* vidaExtra) {
	
	AsignarAObjeto(vidaExtra);
}

TipoEstrellaInvencibilidad::TipoEstrellaInvencibilidad(TipoBonus_y tipoBonus) {
	
	Inicializar(tipoBonus.ancho, tipoBonus.alto, tipoBonus.animaciones, EstadoEstrellaInvencibilidad::descripcionAcciones, tipoBonus.velocidad, tipoBonus.salto);
	GestionTiposBonus::idPrincipalEstrellaInvencibilidad = acciones.at(0).idImagen;
}

void TipoEstrellaInvencibilidad::AsignarABonus(EstrellaInvencibilidad* estrellaInvencibilidad) {
	
	AsignarAObjeto(estrellaInvencibilidad);
}		

TipoVolador::TipoVolador(TipoBonus_y tipoBonus) {
	
	Inicializar(tipoBonus.ancho, tipoBonus.alto, tipoBonus.animaciones, EstadoVolador::descripcionAcciones, tipoBonus.velocidad, tipoBonus.salto);
	GestionTiposBonus::idPrincipalVolador = acciones.at(0).idImagen;
}

void TipoVolador::AsignarABonus(Volador* volador) {
	
	AsignarAObjeto(volador);
}	